Presently, a study published by the National Institute of Standards and Technology (NIST) showed that application or software defects cost 60 billion USD annually to US economy. Another study says that the annual cost of IT failure is around 6.18 trillion USD with failure rate increasing at a rate of around 15% per year. In yet another study, it is found that 47% had higher maintenance costs than expected. These statistics show that a lot of cost is being spent in maintaining the application or software.
Application or software maintenance is a process of modifying an application or software system or component after delivery to correct faults, improve performance or other attributes, or adapt to a changed environment. The definition is conceptualized as a reactive activity which is carried after software delivery to the users. Accordingly, software maintenance activity aims to fix, enhance and change the application or software after releasing and also looks to optimize these tasks by having a complete maintenance plan before delivery.
Application maintenance can be of two types, reactive and preventive. In the reactive maintenance, bugs are corrected after they were reported by the end-users or customers of software. Whereas, in the preventive maintenance steps are taken to correct bugs that are under the hood of the application before they are manifested during the usage of the application by the end-users.
The reactive maintenance can be classified as corrective maintenance, adaptive maintenance and perfective maintenance as they are triggered or applied on receiving the end-user request and observing the degradation in the performance of the application.
Corrective maintenance which deals with fixing faults in the system that could have been originated by its users from different sources such as design, logic or coding errors. Generally, a user requests to fix the fault found in application or software triggers a corrective measure.
Adaptive maintenance consists of making the application to work for particular changes in the environment. For example, changes in hardware architecture, new government policies or different business rules. This can be done by constantly monitoring the application or software environment.
Perfective maintenance modifies the software according to user requests for an enhanced functionality.
Preventive maintenance aims to prevent faults or failures before they become evident while using the application or software after its release and deployment. Preventive maintenance (PM) is carried out by analyzing and using well-conceived techniques and processes to find unidentified errors during the normal verification and validation process of the application. The PM activity is an anticipatory activity as it aims to prevent errors before they occur. There is a need to identify techniques that identify/recognize and rectify faults before the application or software is being released. Preventive maintenance techniques are expected to bring down the cost of maintenance of application or software.
The current techniques have the following limitations, there are no metrics defined for preventability of failures of application or software. There are no techniques to measure or predict the preventability of application. There are no techniques or methods that quantify the quality of an application from the point of how effectively it is designed to prevent the failures from occurring in the field. The existing methods do not propose a metric which defines the overall quality of the application to estimate how well it can prevent failures in future. The existing metrics and techniques used during maintenance are reactive in nature rather than being preventive.